
#include <termios.h>
#include <fcntl.h>

int
open_line(char *line, int spd)
{
	struct termios tios;
	int fd;
	
	fd = open(line, O_RDWR | O_NOCTTY | O_NDELAY);
	if (fd == -1)
		return -1;
		
	if ( fcntl(fd, F_SETFL, 0) < 0 )
		return -1;
		
	if ( tcgetattr(fd, &tios) < 0 )
		return -1;
	
	cfsetispeed(&tios, spd);
	cfsetospeed(&tios, spd);
	tios.c_cflag |= (CLOCAL | CREAD | CS8);
	tios.c_oflag = ~OPOST;
	tios.c_lflag &= ~(ICANON | IEXTEN | ISIG | ECHO);
	tios.c_iflag &= ~(ICRNL | INPCK | ISTRIP | IXON | BRKINT);
	tios.c_cc[VTIME] = 0;
	tios.c_cc[VMIN] = 1;
	
	if ( tcsetattr(fd, TCSANOW, &tios) < 0 )
		return -1;
		
	return fd;
}